
#ifndef _EL_TYPE_
#define _EL_TYPE_

#include "var.h"
#include <string>
using std::string;
#include <vector>
using std::vector;

typedef el_var* (*children_func) (void*, int);

class el_type
{
public:
	string name;
	children_func get_children;
};

/*
 * All types can have their children. As long as there isn't much complexity
 * in storing the variable data, function just returns the first child when
 * called with param 0, second wih param 1, and NULL if there's no more
 * children abailable.
 * There's no better way to deal with complicated structures - we are doing this
 * to prevent unnecessary memory allocations, but there's also no restriction
 * about allocating your own dependency pointer table.
 * If there's absolutely NO dependency, the function pointer can be
 * set to NULL to avoid redundant function calls.
 */

#endif

